---
title: Load and cache the manual class type code map
summary: Builds and caches the manual-class-type code map from MANUAL_CLASS_TYPE_CODE.
status: draft
owner: SAIF Documentation Generator
last_reviewed: 2026-08-21
library: SAIF.Business.Policy
reference_type: package
operation_id: op-13-manual-class-type-code-map
trigger: Caller invokes CodeMaps.GetManualClassTypeCodeMap
---

# Load and cache the manual class type code map

Builds and caches (per-process, `Static`) the manual-class-type code map used to translate manual class type codes to their descriptive enum values.

| Field | Value |
| --- | --- |
| **Operation ID** | op-13-manual-class-type-code-map |
| **Trigger** | Caller invokes `CodeMaps.GetManualClassTypeCodeMap` |
| **Inputs** | `IDataPortalInfo`, optional refresh flag |
| **Outputs** | Cached `clsManualClassTypeCodeMap` |
| **Primary components** | `CodeMaps.GetManualClassTypeCodeMap`, `clsManualClassTypeCodeMap` |
| **Entry point** | SAIF.Business.Policy/CodeMaps/clsManualClassTypeCodeMap.vb |

## Steps

1. Same caching contract as [Load and cache the benefit jurisdiction code map](op-12-benefit-jurisdiction-code-map.md) ([BR-POL-016](../business-rules.md#br-pol-016-code-map-caching)).
2. Constructor runs `select code, code_descr from MANUAL_CLASS_TYPE_CODE` ([SQL-003](../sql/SQL-003-manual-class-type-code-lookup.md)).
3. Maps only `"D"`→`Disease`, `"F"`→`Federal`, `"M"`→`Maritime`, `"FELA"`→`FELA`, `"R"`→`Regular`, `"U"`→`USLH` ([BR-POL-013](../business-rules.md#br-pol-013-manual-class-type-code-recognition)); all other codes (including the commented-out `E`, `DOMES`, `NONRT`, `EC`, `IFANY`, `STAT`, `BLK`, `SES`) are ignored.

## Process flow

The following diagram visualizes this operation's control flow.

```mermaid
flowchart TD
	Start(["Caller invokes<br>GetManualClassTypeCodeMap"]) --> A{"refresh is true or<br>cached instance is Nothing?"}
	A -->|No| End(["Return cached<br>clsManualClassTypeCodeMap"])
	A -->|Yes| B["Construct new map<br>(same caching contract as<br>benefit jurisdiction map)"]
	B --> C["Run SELECT code, code_descr<br>FROM MANUAL_CLASS_TYPE_CODE"]
	C --> D["Iterate result rows"]
	D --> E{"Code = D, F, M,<br>FELA, R, or U?"}
	E -->|Yes| F["Map to Disease / Federal /<br>Maritime / FELA / Regular / USLH"]
	E -->|No| G["Ignore code"]
	F --> End
	G --> End
```

## Failure and edge-case behavior
- All other codes — including the commented-out `E`, `DOMES`, `NONRT`, `EC`, `IFANY`, `STAT`, `BLK`, `SES` — are ignored and are not added to the map ([BR-POL-013](../business-rules.md#br-pol-013-manual-class-type-code-recognition)).

## Related documentation
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [SQL catalog](../sql/index.md)
- [Database tables](../database-tables.md)

## Sources
- `SAIF.Business.Policy/CodeMaps/clsManualClassTypeCodeMap.vb`
